package com.cqq.auth.dao;

import java.util.List;

import com.cqq.auth.dao.domain.User;
import com.cqq.common.core.interfaces.CommonDao;

/**
 * <h3>用户信息Dao接口</h3>
 * 
 * @author xijq
 * @version 1.0.0
 * 
 */
public interface UserDao extends CommonDao<User> {

	/**
	 * <h3>根据用户名查询用户数据</h3>
	 * 
	 * @param username 用户名
	 * 
	 * @return 用户数据对象
	 * 
	 */
	public User queryByUsername(String username);

	/**
	 * <h3>根据用户名或真实姓名查询用户数据</h3>
	 * 
	 * @param name 用户名或真实姓名
	 * 
	 * @return 用户数据对象列表
	 * 
	 */
	public List<User> queryByName(String name);
	
	/**
	 * <h3>根据用户ID数组查询用户数据</h3>
	 * 
	 * @param ids 用户ID数组
	 * 
	 * @return 用户数据列表
	 * 
	 */
	public List<User> queryByIds(Integer[] ids);
	
	/**
	 * <h3>按用户ID更新状态</h3>
	 * 
	 * @param id 用户ID
	 * @param status 用户状态
	 * 
	 */
	public void updateStatus (Integer id, Integer status);
	
	/**
	 * <h3>更新用户角色ID</h3>
	 * 
	 * @param id 用户ID
	 * @param roleIds 角色ID数组
	 * 
	 */
	public void updateRoleIds (Integer id, Integer[] roleIds);
	
	/**
	 * <h3>更新用户组织ID</h3>
	 * 
	 * @param id 用户ID
	 * @param orgIds 组织ID数组
	 * 
	 */
	public void updateOrgIds (Integer id, Integer[] orgIds);
	

	/**
	 * <h3>按用户ID更新密码</h3>
	 * 
	 * @param id 用户ID
	 * @param password 加密后的密码字符串
	 * 
	 */
	public void updatePassword (Integer id, String password);
	
	
	public List<User> queryUserByParentOrgId(Integer parentId,String realName);
	
	
	public List<User> listUserByOrgId(Integer[] orgIds);
	
	
	public void updateUserUserGroup(Integer userId, Integer[] userGroupIds);
	
	/**
	 * 根据状态或用户真实姓名，查询组织下用户
	 * @param parentId
	 * @param realName
	 * @param status
	 * @return
	 */
	public List<User> queryUserByParentOrgIdandStatus(Integer parentId,String realName,Integer status);
	
	/**
	 * 根据用户状态，查询指定组织下的用户
	 * @param orgids
	 * @param status  0停用 1启用 
	 * @return
	 */
	public List<User> listUserByOrgIdAndStatus(Integer[] orgids,Integer status);
}
